package com.zk.demo.util;

import com.zk.demo.bean.Fund;

import java.math.BigDecimal;

public class GetMoney {

    /**
     *
     * @param principal 本金
     * @param rateOfReturn 收益率
     * @param expected 期望赚到多少钱 或者百分比
     * @return
     */
    public static Fund getMoney(BigDecimal principal, BigDecimal rateOfReturn, BigDecimal expected){

        BigDecimal 当天收益= principal.multiply(rateOfReturn);
        BigDecimal 当天收益后本金=principal.add(当天收益);
        BigDecimal 补仓金额=new BigDecimal(0);
        //先假设第二天收益3%
        BigDecimal 第二天的收益率=BigDecimal.valueOf(0.03);

        BigDecimal 第二天卖出手续费=new BigDecimal(0);
        Fund fund = new Fund();


        //如果期望赚的是一个百分比则先转换成具体金额去计算
        if (expected.compareTo(BigDecimal.valueOf(10))==-1){
            expected=principal.multiply(expected);


        }
        //还得要加上手续费0.15%
//        expected=expected.add(principal.multiply(BigDecimal.valueOf(0.015)));
        if(当天收益.compareTo(new BigDecimal(0))==-1){
            //如果收益为负,说明需要补仓,计算补仓金额
            补仓金额=expected.add(当天收益.abs()).divide(第二天的收益率,2).subtract(当天收益后本金).setScale(0,1);


        }


        第二天卖出手续费=补仓金额.add(principal).multiply(BigDecimal.valueOf(0.015)).setScale(0,1);
        fund.setRepairMoney(补仓金额);
        fund.setTomorrMoney(第二天卖出手续费);

//        System.out.println("当天收益:"+当天收益+"\n当天收益后本金:"+当天收益后本金+"\n如果需要收益"+expected+"  当天需要补仓-------->:"+补仓金额+"\n如果第二天卖出扣除手续费后的收益:"+扣除手续费后的收益);

        return fund;




    }
}
